//École de Technologie Supérieure (ÉTS)
//LOG720 - Laboratoire 3  - Intégration de Spring + Hibernate
//Date de remise: 2011-12-13
//Auteurs:
//Jonathan Aubuchon (AUBJ18038704)
//Jeff Grenier (GREJ02098703)
//Francis Paré (PARF21038708)


package springapp.repository;

import java.util.List;

import org.hibernate.Session;

import springapp.domain.Infraction;
import util.HibernateUtil;

/*
 * Data Acces Object pour les infractions
 */
public class InfractionDAO {
	
	/**
	 * Retourne la totalit� des infractions sous la forme d'une collection d'infractions
	 * @return 
	 */
	public List<Infraction> selectInfractions(){
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();

		List result = session.createQuery("from Infraction").list();

		session.getTransaction().commit();

		return result;
	}
	
	
	/**
	 * retourne la liste des infractions pour un dossier en particulier.
	 * @param dossierID
	 * @return
	 */
	public List<Infraction> selectInfractions(int dossierID){

		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();

		String query = "select d.infractions from Dossier d where d.id = :pid";
		
		List result = session.createQuery(query)
				.setParameter("pid", dossierID).list();

		session.getTransaction().commit();
		
		return result;
	}

	
	
	/**
	 * Ajoute une nouvelle infraction au syst�me.
	 * Retourne true si l'ajout a fonctionn�, sinon false en cas d'�chec
	 * @param infraction
	 * @return
	 */
	public boolean insertInfraction(Infraction infraction){
		boolean isGood = true;
		
		try{
			Session session = HibernateUtil.getSessionFactory().getCurrentSession();
			session.beginTransaction();
			session.save(infraction);
			session.getTransaction().commit();
		}
		catch(Exception e){
			isGood = false;
		}
		return isGood;
	}

}
